package org.lds.hotkey.console.business.hotkey.service;

import org.lds.hotkey.common.model.dto.ResultDTO;
import org.lds.hotkey.common.model.pojo.OrderBy;
import org.lds.hotkey.common.model.pojo.PageResult;
import org.lds.hotkey.console.business.hotkey.entity.HotKey;
import org.lds.hotkey.console.business.hotkey.model.request.*;
import org.lds.hotkey.console.business.hotkey.model.response.*;


/**
 *  基础服务类
 *
 * @author lidongsheng
 * @since 2024-06-18
 */
public interface HotKeyBaseService {
    /**
    * 创建
    */
    ResultDTO<HotKeyBaseResponse> createHotKey(HotKeyBaseCreateRequest request);

    /**
    * 批量创建
    */
    ResultDTO<HotKeyBaseBatchCreateResponse> batchCreateHotKey(HotKeyBaseBatchCreateRequest request);

    /**
    * 删除
    */
    ResultDTO<HotKeyBaseDeleteResponse> deleteHotKey(HotKeyBaseDeleteRequest request);

    /**
    * 批量删除
    */
    ResultDTO<HotKeyBaseBatchDeleteResponse> batchDeleteHotKey(HotKeyBaseBatchDeleteRequest request);

    /**
    * 更新
    */
    ResultDTO<HotKeyBaseResponse> updateHotKey(HotKeyBaseUpdateRequest request);

    /**
    * 批量更新
    */
    ResultDTO<HotKeyBaseBatchUpdateResponse> batchUpdateHotKey(HotKeyBaseBatchUpdateRequest request);

    /**
    * 根据ID查询
    */
    ResultDTO<HotKeyBaseResponse> getHotKeyById(HotKeyBaseGetByIdRequest request);

    /**
    * 根据ID集合查询
    */
    ResultDTO<HotKeyBaseListResponse> getHotKeyByIds(HotKeyBaseGetByIdsRequest request);

    /**
    * 根据业务主键查询
    */
    HotKey getHotKeyByKey(HotKeyBaseGetByKeyRequest request);

    /**
    * 查询
    */
    ResultDTO<HotKeyBaseListResponse> listHotKey(HotKeyBaseListRequest request);

    /**
    * 查询所有
    */
    ResultDTO<HotKeyBaseListResponse> listAllHotKey(OrderBy orderBy);

    /**
    * 分页查询
    */
    ResultDTO<PageResult<HotKeyBaseResponse>> listHotKeyPage(HotKeyBaseListPageRequest request);

                                            
                                            
    /***************************** 异步尝鲜 谨慎使用[性能提升10倍以上] start ******************************/
    
    /**
    * 异步批量创建
    */
    ResultDTO<HotKeyBaseBatchCreateResponse> batchCreateHotKeyAsync(HotKeyBaseBatchCreateRequest request);
    
    /**
    * 异步批量删除
    */
    ResultDTO<HotKeyBaseBatchDeleteResponse> batchDeleteHotKeyAsync(HotKeyBaseBatchDeleteRequest request);
    
    /**
    * 异步批量更新
    */
    ResultDTO<HotKeyBaseBatchUpdateResponse> batchUpdateHotKeyAsync(HotKeyBaseBatchUpdateRequest request);
    
    /***************************** 异步尝鲜 谨慎使用[性能提升10倍以上] end ******************************/
}